<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>

    /* 
      类 和 构造函数 的历史渊源：
        1. JS中的通过 构造函数 创建实例。
        2. 其他开发语言如 Java 是通过 类 创建实例。
        3. ES6 的类语法，类其实是个构造函数的语法糖。
        所以在 JS 中类就是构造函数，构造函数就是类。
    */

    // 之前原生JS的构造函数
    // function Person(name) {
    //   this.name = name;
    // }
    // Person.prototype.sayHi = function () {
    //   console.log('人能说话');
    // }

    // ES6 类的写法 - 构造函数的语法糖 - 是上面代码的另一种写法而已
    class Person {
      constructor(name) {
        this.name = name;
      }
      sayHi() {
        console.log('人能说话');
      }
    }


    // 调用构造函数创建实例
    const p1 = new Person('小明');

    // 百度地图把构造函数放到了一个对象中管理
    const MyObj = {
      Person: Person
    }
    // 类似百度地图的构造写法
    const p2 = new MyObj.Person('小红');

    // 创建实例1
    console.log(p1);
    // 创建实例2
    console.log(p2);

    // 实例能调用原型上的方法
    p1.sayHi();
    p2.sayHi();
  </script>
</body>

</html>